@苏苏
2年前 提问
1个回答

失效的身份认证与会话管理漏洞利用方式有哪些

delay
2年前

失效的身份认证与会话管理漏洞利用方式有以下这些:

  • 凭证填充:使用已知密码的列表,对用户进行逐一破解尝试,如果程序不限制身份验证尝试,那么应用程序可作为密码的orcal,来确认凭证是否有效,一旦凭证有效则攻击成功。

  • 弱密码:使用简单连续的数字或者字母,例如123456,尝试破解用户的密码,成功率不高但是这种利用方式是最简单没有任何成本,一但成功一本万利。

  • 密码破解:掌握了密码的组合方式或者加密的细节,然后编写相应的密码字典,利用这些相应的密码破解工具将字典内部的密码使用不同的排列组合来尝试破解密码,这种利用方式成功率高,但是耗时严重。

  • 不安全的密码存储:密码采用明文、可逆的加密密码或弱散列密码,攻击者可以尝试抓取数据传输过程中的数据包,分析数据包内部的数据,因为数据没有加密所以可以直接从数据包中查看的密码。

  • cookie窃取伪造绕过:cookie放在客户端,导致比较容易被窃取,只要该cookie长期有效,或者再器有效时间内,攻击者伪造一个cookie则可以成功登录网站,绕过原有的用户认证。

  • 越权访问:分为垂直越权和水平越权,垂直越权就好比普通用户可以使用管理员才能使用的功能,别入人员的增删改查等。水平越权是同一级别的越权。

  • 会话固定:攻击者诱骗用户使用拟定的session ID,导致应用程序不生成新的session ID,这样原有的密码认证则失效,攻击者不需要认证则直接可以登录。

  • 会话劫持:攻击者作为中间件参与用户与服务器之间的数据交换。例如监听敏感数据、替换数据等。由于攻击者已经介入其中,他能轻易知道双方传输的数据内容,还能根据自己的意愿去左右它。这个“中转站”可以是逻辑上的,也可以是物理上的,关键在于它能否获取到通信双方的数据。

预防失效的身份认证与会话管理漏洞措施有以下这些:

  • 始终生成新的会话。如用户登录成功生成新ID,登录失败后尝试再次登录时原有的ID失效,重新给与一个新ID,防止ID重用,

  • 不应使用简单或可预期的密码恢复问题,登录出错时不应提供太多的提示,应使用统一的出错提示。

  • 登录验证成功后更换Session ID,并且最好使用128位以上具备随机性的Session ID,不应在URL中显示Session ID。

  • 第一次登录时强制修改密码,对多次登录失败的账号进行短时锁定,设置会话闲置超时,超时后强制刷新页面否则无法登陆。

  • 提供用户注销退出功能,用户关闭浏览器或者注销时,删除用户Session;

  • 保护Cookie,如在应用程序中为Cookie设置安全属性为Secure flag和HttpOnly flag。

  • 强制使用一定复杂度的密码且加密存储,登录验证使用用户名、密码、后台验证码三者结合,验证码具有时效性,登录失败后的提示信息模糊化,不得提示具体是用户名错误还是密码错误。

  • 登录后的接口均需要携带认证后的token方可正确访问,token具有时效性,超时将会失效,时效时长设置合理。

  • 不需要认证的接口,也需要采用公司内部制定的token生成方法,前端工程师调用接口时携带,且前端代码必须被混淆。